Подпись модулей ядра

Редактировал(а) Роман Воробьев 2021/07/01 01:55

Модули ядра подписываются дважды, встроенной подписью, которая по умолчанию проверяется независимо от механизма IMA, и  наложенной в расширенные атрибуты файла подписью, как и все остальные файлы. Такое решение дает гибкость в настройке ЗПС и дополнительную защиту по умолчанию для модулей ядра. По умолчанию, их встроенные подписи проверяются  всегда (отключение), а подписи в расширенных атрибутах проверяются только при включенном механизме IMA (включение и выключение).

Для встроенной подписи одиночного модуля следует выполнить команду

/usr/lib/linux-kbuild-5.4/scripts/sign-file md_gost12_256 <закрытый ключ.pem> <сертификат открытого ключа.der > <модуль ядра.ko>

Для наложенной подписи (в расширенных атрибутах) модуля следует выполнить команду:

sudo evmctl -k <закрытый ключ.pem> ima_sign <модуль ядра.ko>

В общем случае, для подписи содержимого deb-пакетов необходимо использовать скрипт sign-deb.sh

Этот скрипт выполняет как подпись модулей ядра, так и подпись ПО в расширенных атрибутах.

sudo /usr/lib/ima-evm-utils/sign-deb.sh /полный/путь/к/закрытому_ключу.pem /полный/путь/к/сертификату.der /полный/путь/к/закрытому_ключу_ядра.pem /полный/путь/к/сертификату_ядра.der /полный/путь/к/пакету.deb

Третий параметр может совпадать с первым, а четвертый со вторым.
В каталоге signed будет сформирован подписанный пакет.deb.